home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / program / 515 / rcs5ap1s.lzh / PORTING.DOC < prev    next >
Text File  |  1991-01-30  |  3KB  |  79 lines

  1. This file contains some notes from my porting effort.  It corresponds to
  2. RCS5AKP1, which is the first release of my port of RCS (Revision Control
  3. System, not Resource Construction Set) version 5.  The date of the release
  4. is Jan 30, 1991.
  5.  
  6. First and foremost, the sources here compile under GCC 1.37.1 using the
  7. libraries from J.Bammi (bammi@cadence.com).  Your mileage may vary.  You
  8. will, at least, need to set ANSI_INCLUDES to zero to compile under a non-
  9. ANSI compiler.
  10.  
  11. The file conf.h is a copy of conf.st, derived from conf.heg.  The original
  12. needed a lot of work.  Study it.  The options in makefile are mostly used to
  13. create conf.h from conf.sh, but since you create conf.h from conf.st (by
  14. copying it) you don't need to worry about most of them.
  15.  
  16. I added some variables to conf.st.  The idea is that if you set them all to
  17. zero, you get EXACTLY the original code for the whole package.  You still
  18. get my name in the usage message, because the sources themselves are
  19. different.
  20.  
  21. The variables I added are:
  22.  
  23. VARIABLE NAME                MEANING WHEN NONZERO
  24.  
  25. DONT_USE_SIGNALS    Blows away all signal handling. Bammi's libs have
  26.             some signal facilities, but I don't trust them.
  27.  
  28. DONT_USE_FORK        Use system() instead.  See below about system().
  29.  
  30. DONT_USE_MAIL        Just tell the guy he's breaking a lock rather than
  31.             sending mail to the lock holder.
  32.  
  33. ANSI_INCLUDE_FILES    Don't redeclare stuff that should come from ANSI
  34.             include files.  This is actually more sweeping than
  35.             that: check your compiler's warning output for
  36.             things that are undeclared or redeclared.
  37.  
  38. USE_AKP_PAIRS        Use my 12345678.123 filename code.
  39.  
  40. HEAD_REV        Add the special name "head" as a rev name.
  41.  
  42. bad_unlink        Tells the code that unlink(A) fails if A is R/O.
  43.  
  44. terrible_rename        Tells the code that rename(A,B) fails if A is R/O.
  45.  
  46. AKP_MODES        Define WORKMODE as this lib needs it, not UNIX style.
  47.  
  48. AKP_BUGFIXES        Enables a couple of fixes for bugs I caught.
  49.  
  50. I also added has_tmpnam; this is used in the code but wasn't present in 
  51. conf.heg.
  52.  
  53. Grepping through the source files for each of these names will show you
  54. what I had to do for the port.  If you define them all to zero (or leave
  55. them undefined) you should get EXACTLY what was in the distribution,
  56. and you can start your own porting effort!
  57.  
  58. I added .ttp to all the executables in the makefile, and commented out
  59. things like merge.
  60.  
  61. rcsbase and conf.h together have declarations and prototypes for stuff
  62. that should come from include files if you actually have ANSI and POSIX
  63. includes.  Your library and include files may vary from mine.
  64.  
  65. There's a serious set of bugs involving errno in rcsfnms.c: basically they
  66. assume it stays unchanged, or gets set to zero, through a successful
  67. library call.  This is contrary to both ANSI and POSIX.  I have fixed this
  68. as best I can, but I may not have gotten it right.
  69.  
  70. ABOUT SYSTEM():
  71.  
  72. The system() call that comes with Bammi's libs seems unnecessarily complex;
  73. it actually does something akin to a fork()/exec() when all it really has
  74. to do is spawn().  I replaced it with something that does spawn().  It also
  75. calls _unx2dos on the redirected input and output file names, which Bammi's
  76. system() didn't do, so system("diff a b >m:/diffout") wouldn't work.  My
  77. system.c is in the sources directory and used in the makefile.
  78.  
  79.